import java.awt.Color;

import javax.media.opengl.GL;

public class Peca extends ObjetoGrafico {

	private CelulaTabuleiro posicaoAtual;
	private boolean jogador1;
	private String nome;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	private boolean selected;

	public Peca(CelulaTabuleiro posicaoAtual, boolean jogador1,
			TipoPeca tipoPeca) {
		super();

		this.jogador1 = jogador1;
		this.posicaoAtual = posicaoAtual;
		this.setTipoPeca(tipoPeca);
		selected = false;
		if (jogador1)
			super.getAparencia().setCor(Color.red);
		else
			super.getAparencia().setCor(Color.blue);
	}

	

	@Override
	public void desenha() {
		gl.glPushMatrix();
		gl.glMultMatrixd(transformacao.getDate(), 0);
		gl.glTranslatef(0, 1, 0);
		gl.glScalef(1, 4, 1);
		float f = (float) getId() / 256;
		gl.glColor4f(aparencia.getCor().getRed(),
				aparencia.getCor().getGreen(), aparencia.getCor().getBlue(), f);
		desenhaconformetipo();
		gl.glPopMatrix();
	}

	public void desenhaconformetipo() {
		switch (getTipoPeca()) {
		case rei: {
			Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			gl.glColor3d(0.0, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			break;
		}
		case rainha: {
			Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			gl.glColor3d(0.0, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			break;
		}

		case bispo: {
			Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			gl.glColor3d(0.0, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			break;
		}
		case cavalo: {
			/*gl.glColor3d(0.1, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutSolidTeapot(0.4, true);
			gl.glColor3d(0.0, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutWireTeapot(0.4, true);
			break;*/
			Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			gl.glColor3d(0.0, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			break;
		}
		case torre: {
			
			gl.glPushMatrix();
			  gl.glScalef(1, 3, 1);
			  gl.glTranslatef(0, 0.2f, 0f);
			  Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			  gl.glColor3d(0.0, 0.0, 0.0);
			  Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			gl.glPopMatrix();
			break;
		}
		case peao: {
			Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			if (selected) {
				gl.glColor3d(0.0, 1.0, 0.0);
			} else {
				gl.glColor3d(0.0, 0.0, 0.0);
			}

			Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			break;
		}

		default:
			Mundo.getInstancia().getGlut().glutSolidCube(0.7f);
			gl.glColor3d(0.0, 0.0, 0.0);
			Mundo.getInstancia().getGlut().glutWireCube(0.7f);
			break;
		}
	}

	public boolean isSelected() {
		return selected;
	}

	public void setSelected(boolean selected) {
		this.selected = selected;
	}

	public CelulaTabuleiro getPosicaoAtual() {
		return posicaoAtual;
	}

	public void setPosicaoAtual(CelulaTabuleiro posicaoAtual) {
		this.posicaoAtual = posicaoAtual;
	}

	public boolean getJogador() {
		return jogador1;
	}

}
